import { ref, watch, computed } from "vue";
import VEdit from "./vEdit.vue"; // 如果需要在组件中使用这个组件
import { ElMessage } from "element-plus";
export function useEditLogic(
  init,
  info,
  resetAdd,
  resetUpdate,
  clearInfo,
  buildAdd,
  buildUpdate,
  close
) {
  const initData = ref(init.value); // 初始化为传入的 init 值
  const loading = ref(false);

  // 计算属性
  const comm = computed(() => {
    return initData.value
      ? {
          isAdd: initData.value.isAdd,
          isView: initData.value.isView,
        }
      : null;
  });

  const isView = computed(() => {
    return init && init.isView;
  });

  const resetClear = () => {
    // 清空重置逻辑
  };

  const reset = () => {
    if (init.value) {
      if (init.value.isAdd) {
        resetAdd();
      } else {
        resetUpdate();
      }
    } else {
      clearInfo();
      resetClear();
    }
  };
  const save = () => {
    const command = init.value.isAdd ? buildAdd() : buildUpdate();
    if (command) {
      loading.value = true;
      command
        .then(() => {
          loading.value = false;
          // this.$messageSuccess(data);
          ElMessage({
            message: "保存成功！",
            type: "success",
          });
          close();
        })
        .catch((err) => {
          loading.value = false;
          console.log(err);
        });
    }
  };

  // 使用 watch 监听 init 的变化
  watch(
    init,
    (newVal) => {
      reset();
      initData.value = newVal; // 每次 init 发生变化时更新 initData
    },
    { immediate: true }
  ); // 确保初始时也执行一次

  return {
    loading,
    info,
    comm,
    isView,
    VEdit,
    reset,
    save,
    initData,
  };
}
